/*
 * CintaTransportadoraFisica.cpp
 *
 *  Created on: Oct 10, 2013
 *      Author: Hernan
 */

#include "CintaTransportadoraFisica.h"

typedef struct InfoEntidad {
   string *nombre;
   EntidadFisica *entidad;
} InfoEntidad ;


CintaTransportadoraFisica::CintaTransportadoraFisica(b2World* world, float x, float y,float ancho, float alto, string tipo) :  EntidadFisica(tipo) {

	this->definicionCuerpoFisico->position.Set(x, y);
	this->definicionCuerpoFisico->angle = 0;
	this->definicionCuerpoFisico->type = b2_staticBody;
	this->cuerpoFisico = world->CreateBody(definicionCuerpoFisico);

	b2PolygonShape rectangulo;

	//seteo las dimensiones de la viga
	rectangulo.SetAsBox(ancho/2,alto/2);
	this->fixture = new b2FixtureDef();
	this->fixture->shape = &rectangulo;
	this->fixture->isSensor= true;
	this->cuerpoFisico->CreateFixture(this->fixture);


	b2BodyDef* defcuerpoFisico = new b2BodyDef();
	defcuerpoFisico->position.Set(x, y+alto/3);
	defcuerpoFisico->angle = 0;
	this->cuerpoFisico2 = world->CreateBody(defcuerpoFisico);
	rectangulo.SetAsBox(ancho/2,alto/6);

	b2FixtureDef* fixture= new b2FixtureDef();
	fixture->shape = &rectangulo;
	fixture->density = 1.0f;
	this->cuerpoFisico2->CreateFixture(fixture);



	b2BodyDef* defcuerpoFisico2 = new b2BodyDef();
	defcuerpoFisico2->position.Set(x, y-alto/3);
	defcuerpoFisico2->angle = 0;
	this->cuerpoFisico3 = world->CreateBody(defcuerpoFisico2);
	rectangulo.SetAsBox(ancho/2,alto/6);

	b2FixtureDef* fixture2= new b2FixtureDef();
	fixture2->shape = &rectangulo;
	fixture2->density = 1.0f;
	this->cuerpoFisico3->CreateFixture(fixture);

	this->guardarInformacionDeEntidad();
	this->alto = alto;
	this->ancho = ancho;
}

CintaTransportadoraFisica::~CintaTransportadoraFisica() {
	// TODO Auto-generated destructor stub
}

void CintaTransportadoraFisica::guardarInformacionDeEntidad(){

	InfoEntidad* info1= (InfoEntidad*)malloc(sizeof(InfoEntidad));
	info1->nombre= new string("plataforma_arriba");
	info1->entidad = this;
	this->cuerpoFisico2->SetUserData(info1);

	InfoEntidad* info2= (InfoEntidad*)malloc(sizeof(InfoEntidad));
	info2->nombre= new string("plataforma_abajo");
	info2->entidad = this;
	this->cuerpoFisico3->SetUserData(info2);
}

b2Body* CintaTransportadoraFisica::obtenerCuerpoEngranaje(){
	return this->aJointearInicial->obtenerCuerpo();
}

void CintaTransportadoraFisica::jointear(b2World* world){


}
